void lbann_callback_dump_minibatch_sample_indices::dump_to_file(model *m, Layer *l, int64_t step) {
  // Print minibatch sample indices of input layers
  auto *input = dynamic_cast<generic_input_layer*>(l);
  if (input != nullptr) {
    El::Matrix<El::Int>* indices = l->get_sample_indices_per_mb();
    if (indices == nullptr
        || indices->Height() == 0
        || indices->Width() == 0) {
      return;
    }

    std::ostringstream s;
    s << "mkdir -p " << m_basename;
    const int dir= system(s.str().c_str());
    if (dir< 0) {
      LBANN_ERROR("callback_dump_minibatch_sample_indices is unable to create the target director");
    }

    const std::string file
      = (m_basename
         + _to_string(m->get_execution_mode())
         + "-model" + std::to_string(m->get_comm()->get_trainer_rank())
         + "-rank" + std::to_string(m->get_comm()->get_rank_in_trainer())
         + "-epoch" + std::to_string(m->get_cur_epoch())
         + "-step" + std::to_string(m->get_cur_step())
         + "-" + l->get_name()
         + "-MB_Sample_Indices");
    El::Write(*indices, file, El::ASCII);
  }
}
Exemple #2
0
 std::string DateTime::to_short_time_string() const
 {
   struct tm result;
   return _to_string("%R", localtime_r((const time_t *)&m_date.tv_sec, &result));
 }
Exemple #3
0
 std::string DateTime::to_string(const char * format) const
 {
   struct tm result; 
   return _to_string(format, localtime_r((const time_t *)&m_date.tv_sec, &result));
 }
            void showLayer(bool& opened)
            {
                ImGui::OpenPopup("Force Setting");
                if (ImGui::BeginPopupModal("Force Setting", NULL,
                                           ImGuiWindowFlags_AlwaysAutoResize |
                                           ImGuiWindowFlags_NoResize |
                                           ImGuiWindowFlags_NoCollapse))
                {
                    auto& file = _gmxLayer.getFile();
                    
                    ImGui::BeginGroup();
                    ImGui::PushID(0);
                    ImGui::PushItemWidth(200);
                    ImGui::InputText("", file.force1.name.data(), 20);
                    ImGui::PopItemWidth();
                    ImGui::BeginChild("dummy1", ImVec2(200, 200), true);
                    
                    if ( _isItemClicked && ImGui::IsMouseReleased(0) && ImGui::IsMouseHoveringWindow() )
                    {
                        (_gmxLayer.getPlayerInfos() + _clickedPlayer)->force = Force::FORCE_1;
                        _isItemClicked = false;
                    }
                    
                    for ( auto i = 1 ; i <= 8 ; ++ i)
                    {
                        const PlayerInfo& info = *(_gmxLayer.getPlayerInfos() + i);
                        if ( info.force != Force::FORCE_1 || info.owner == Owner::UNUSED ) continue;
                        
                        std::string name = "Player " + _to_string(static_cast<int>(info.player));
                        if ( info.owner == Owner::HUMAN ) name += " (Human)";
                        else if ( info.owner == Owner::COMPUTER ) name += " (Computer)";
                        
                        ImGui::Selectable(name.c_str());
                        if ( ImGui::IsItemClicked() )
                        {
                            _isItemClicked = true;
                            _clickedPlayer = static_cast<int>(info.player);
                        }
                    }
                    
                    ImGui::EndChild();
                    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_ComboBg]);
                    ImGui::Checkbox("ally", &file.force1.isAlly);
                    ImGui::SameLine(); ImGui::Checkbox("vision", &file.force1.isVision);
                    ImGui::PopStyleColor();
                    ImGui::PopID();
                    ImGui::EndGroup();
                    
                    ImGui::SameLine();
                    ImGui::BeginGroup();
                    ImGui::PushID(1);
                    ImGui::PushItemWidth(200);
                    ImGui::InputText("", file.force2.name.data(), 20);
                    ImGui::PopItemWidth();
                    ImGui::BeginChild("dummy2", ImVec2(200,200), true);
                    
                    if ( _isItemClicked && ImGui::IsMouseReleased(0) && ImGui::IsMouseHoveringWindow() )
                    {
                        (_gmxLayer.getPlayerInfos() + _clickedPlayer)->force = Force::FORCE_2;
                        _isItemClicked = false;
                    }
                    
                    for ( auto i = 1 ; i <= 8 ; ++ i)
                    {
                        const PlayerInfo& info = *(_gmxLayer.getPlayerInfos() + i);
                        if ( info.force != Force::FORCE_2 || info.owner == Owner::UNUSED ) continue;
                        
                        std::string name = "Player " + _to_string(static_cast<int>(info.player));
                        if ( info.owner == Owner::HUMAN ) name += " (Human)";
                        else if ( info.owner == Owner::COMPUTER ) name += " (Computer)";
        
                        ImGui::Selectable(name.c_str());
                        if ( ImGui::IsItemClicked() )
                        {
                            _isItemClicked = true;
                            _clickedPlayer = static_cast<int>(info.player);
                        }
                    }

                    ImGui::EndChild();
                    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_ComboBg]);
                    ImGui::Checkbox("ally", &file.force2.isAlly);
                    ImGui::SameLine(); ImGui::Checkbox("vision", &file.force2.isVision);
                    ImGui::PopStyleColor();
                    ImGui::PopID();
                    ImGui::EndGroup();
                    
                    ImGui::BeginGroup();
                    ImGui::PushID(2);
                    ImGui::PushItemWidth(200);
                    ImGui::InputText("", file.force3.name.data(), 20);
                    ImGui::PopItemWidth();
                    ImGui::BeginChild("dummy3", ImVec2(200,200), true);
                    
                    if ( _isItemClicked && ImGui::IsMouseReleased(0) && ImGui::IsMouseHoveringWindow() )
                    {
                        (_gmxLayer.getPlayerInfos() + _clickedPlayer)->force = Force::FORCE_3;
                        _isItemClicked = false;
                    }
                    
                    for ( auto i = 1 ; i <= 8 ; ++ i)
                    {
                        const PlayerInfo& info = *(_gmxLayer.getPlayerInfos() + i);
                        if ( info.force != Force::FORCE_3 || info.owner == Owner::UNUSED) continue;
                        
                        std::string name = "Player " + _to_string(static_cast<int>(info.player));
                        if ( info.owner == Owner::HUMAN ) name += " (Human)";
                        else if ( info.owner == Owner::COMPUTER ) name += " (Computer)";
                        
                        ImGui::Selectable(name.c_str());
                        if ( ImGui::IsItemClicked() )
                        {
                            _isItemClicked = true;
                            _clickedPlayer = static_cast<int>(info.player);
                        }
                    }
                    
                    ImGui::EndChild();
                    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_ComboBg]);
                    ImGui::Checkbox("ally", &file.force3.isAlly);
                    ImGui::SameLine(); ImGui::Checkbox("vision", &file.force3.isVision);
                    ImGui::PopStyleColor();
                    ImGui::PopID();
                    ImGui::EndGroup();
                    
                    ImGui::SameLine();
                    ImGui::BeginGroup();
                    ImGui::PushID(3);
                    ImGui::PushItemWidth(200);
                    ImGui::InputText("", file.force4.name.data(), 20);
                    ImGui::PopItemWidth();
                    ImGui::BeginChild("dummy4", ImVec2(200,200), true);
                    
                    if ( _isItemClicked && ImGui::IsMouseReleased(0) && ImGui::IsMouseHoveringWindow() )
                    {
                        (_gmxLayer.getPlayerInfos() + _clickedPlayer)->force = Force::FORCE_4;
                        _isItemClicked = false;
                    }
                    
                    for ( auto i = 1 ; i <= 8 ; ++ i)
                    {
                        const PlayerInfo& info = *(_gmxLayer.getPlayerInfos() + i);
                        if ( info.force != Force::FORCE_4 || info.owner == Owner::UNUSED ) continue;
                        
                        std::string name = "Player " + _to_string(static_cast<int>(info.player));
                        if ( info.owner == Owner::HUMAN ) name += " (Human)";
                        else if ( info.owner == Owner::COMPUTER ) name += " (Computer)";
                        
                        ImGui::Selectable(name.c_str());
                        if ( ImGui::IsItemClicked() )
                        {
                            _isItemClicked = true;
                            _clickedPlayer = static_cast<int>(info.player);
                        }
                    }
                    
                    ImGui::EndChild();
                    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_ComboBg]);
                    ImGui::Checkbox("ally", &file.force4.isAlly);
                    ImGui::SameLine(); ImGui::Checkbox("vision", &file.force4.isVision);
                    ImGui::PopStyleColor();
                    ImGui::PopID();
                    ImGui::EndGroup();
                    
                    if ( ImGui::Button("Ok", ImVec2(100, 20)) )
                    {
                        closeWindow();
                        opened = false;
                    }
                    
                    ImGui::SameLine();
                    if (ImGui::Button("Cancel", ImVec2(100, 20)))
                    {
                        closeWindow();
                        opened = false;
                    }
                    
                    ImGui::EndPopup();
                }
            }
Exemple #5
0
static bool _convert(CMATRIX *_object, GB_TYPE type, GB_VALUE *conv)
{
	if (THIS)
	{
		if (!COMPLEX(THIS))
		{
			switch (type)
			{
				/*case GB_T_FLOAT:
					conv->_float.value = gsl_blas_dnrm2(MAT(THIS));
					return FALSE;
					
				case GB_T_SINGLE:
					conv->_single.value = gsl_blas_dnrm2(MAT(THIS));
					return FALSE;
					
				case GB_T_INTEGER:
				case GB_T_SHORT:
				case GB_T_BYTE:
					conv->_integer.value = gsl_blas_dnrm2(MAT(THIS));
					return FALSE;
					
				case GB_T_LONG:
					conv->_long.value = gsl_blas_dnrm2(MAT(THIS));
					return FALSE;*/
					
				case GB_T_STRING:
				case GB_T_CSTRING:
					conv->_string.value.addr = _to_string(THIS, type == GB_T_CSTRING);
					conv->_string.value.start = 0;
					conv->_string.value.len = GB.StringLength(conv->_string.value.addr);
					return FALSE;
					
				default:
					return TRUE;
			}
		}
		else
		{
			switch (type)
			{
				/*case GB_T_FLOAT:
					conv->_float.value = gsl_blas_dznrm2(CMAT(THIS));
					return FALSE;
					
				case GB_T_SINGLE:
					conv->_single.value = gsl_blas_dznrm2(CMAT(THIS));
					return FALSE;
					
				case GB_T_INTEGER:
				case GB_T_SHORT:
				case GB_T_BYTE:
					conv->_integer.value = gsl_blas_dznrm2(CMAT(THIS));
					return FALSE;
					
				case GB_T_LONG:
					conv->_long.value = gsl_blas_dznrm2(CMAT(THIS));
					return FALSE;*/
					
				case GB_T_STRING:
				case GB_T_CSTRING:
					conv->_string.value.addr = _to_string(THIS, type == GB_T_CSTRING);
					conv->_string.value.start = 0;
					conv->_string.value.len = GB.StringLength(conv->_string.value.addr);
					return FALSE;
					
				default:
					return TRUE;
			}
		}
	}
	else if (type >= GB_T_OBJECT)
	{
		/*if (type == CLASS_Complex)
		{
			CCOMPLEX *c = (CCOMPLEX *)conv->_object.value;
			CMATRIX *m = MATRIX_create(2, 2, FALSE, FALSE);
			
			gsl_matrix_set(MAT(m), 0, 0, GSL_REAL(c->number));
			gsl_matrix_set(MAT(m), 1, 1, GSL_REAL(c->number));
			gsl_matrix_set(MAT(m), 0, 1, -GSL_IMAG(c->number));
			gsl_matrix_set(MAT(m), 1, 0, GSL_IMAG(c->number));
			
			conv->_object.value = m;
			return FALSE;
		}
		else*/ if (GB.Is(conv->_object.value, CLASS_Array))
		{
			GB_ARRAY array = (GB_ARRAY)conv->_object.value;
			GB_ARRAY array2;
			int height = GB.Array.Count(array);
			int width = 0;
			GB_TYPE atype = GB.Array.Type(array);
			GB_TYPE atype2;
			int i, j, w;
			GB_VALUE temp;
			void *data;
			CMATRIX *m;
			CCOMPLEX *c;
			bool complex;
			
			if (atype >= GB_T_OBJECT)
			{
				complex = FALSE;
				
				for (i = 0; i < height; i++)
				{
					data = GB.Array.Get(array, i);
					array2 = *((void **)data);
					if (!array2 || !GB.Is(array2, CLASS_Array))
						return TRUE;
					
					w = GB.Array.Count(array2);
					if (w > width)
						width = w;
					
					atype2 = GB.Array.Type(array2);
					
					if (atype2 == GB_T_VARIANT || atype2 == CLASS_Complex)
						complex = TRUE;
					else if (!(atype2 > GB_T_BOOLEAN && atype2 <= GB_T_FLOAT))
						return TRUE;
				}
				
				//fprintf(stderr, "create: %d %d %d\n", width, height, complex);
				m = MATRIX_create(width, height, complex, TRUE);
				
				for (i = 0; i < height; i++)
				{
					array2 = *((void **)GB.Array.Get(array, i));
					atype2 = GB.Array.Type(array2);
					w = GB.Array.Count(array2);
					
					if (atype2 > GB_T_BOOLEAN && atype2 <= GB_T_FLOAT)
					{
						for (j = 0; j < w; j++)
						{
							data = GB.Array.Get(array2, j);
							GB.ReadValue(&temp, data, atype2);
							GB.Conv(&temp, GB_T_FLOAT);
							if (complex)
								gsl_matrix_complex_set(CMAT(m), i, j, gsl_complex_rect(temp._float.value, 0));
							else
								gsl_matrix_set(MAT(m), i, j, temp._float.value);
						}
					}
					else if (atype2 == GB_T_VARIANT)
					{
						for (j = 0; j < w; j++)
						{
							GB.ReadValue(&temp, GB.Array.Get(array2, j), atype2);
							GB.BorrowValue(&temp);
							GB.Conv(&temp, CLASS_Complex);
							c = temp._object.value;
							if (c)
								gsl_matrix_complex_set(CMAT(m), i, j, c->number);
							else
								gsl_matrix_complex_set(CMAT(m), i, j, COMPLEX_zero);
							GB.ReleaseValue(&temp);
						}
					}
					else if (atype2 == CLASS_Complex)
					{
						for (j = 0; j < w; j++)
						{
							c = *((CCOMPLEX **)GB.Array.Get(array2, j));
							if (c)
								gsl_matrix_complex_set(CMAT(m), i, j, c->number);
							else
								gsl_matrix_complex_set(CMAT(m), i, j, COMPLEX_zero);
						}
					}
				}
				
				conv->_object.value = m;
				return FALSE;
			}
		}
	}
	/*else if (type > GB_T_BOOLEAN && type <= GB_T_FLOAT)
	{
		CMATRIX *m = MATRIX_create(2, 2, FALSE, TRUE);
		double value;
		
		if (type == GB_T_FLOAT)
			value = conv->_float.value;
		else if (type == GB_T_SINGLE)
			value = conv->_single.value;
		else
			value = conv->_integer.value;
		
		gsl_matrix_set(MAT(m), 0, 0, value);
		gsl_matrix_set(MAT(m), 1, 1, value);
		
		conv->_object.value = m;
		return FALSE;
	}*/
	
	return TRUE;
}
Exemple #6
0
inline char* zobject::to_string() {
    char* result = NULL;
    VIRTUAL_FUNCTION_CALL(result, _to_string());
    return result;
}
Exemple #7
0
 char* zsyntree_to_string() {
   return _to_string(true, true);
 }
Exemple #8
0
static bool _convert(CVECTOR *_object, GB_TYPE type, GB_VALUE *conv)
{
	if (THIS)
	{
		if (!COMPLEX(THIS))
		{
			switch (type)
			{
				case GB_T_FLOAT:
					conv->_float.value = gsl_blas_dnrm2(VEC(THIS));
					return FALSE;
					
				case GB_T_SINGLE:
					conv->_single.value = gsl_blas_dnrm2(VEC(THIS));
					return FALSE;
					
				case GB_T_INTEGER:
				case GB_T_SHORT:
				case GB_T_BYTE:
					conv->_integer.value = gsl_blas_dnrm2(VEC(THIS));
					return FALSE;
					
				case GB_T_LONG:
					conv->_long.value = gsl_blas_dnrm2(VEC(THIS));
					return FALSE;
					
				case GB_T_STRING:
				case GB_T_CSTRING:
					conv->_string.value.addr = _to_string(THIS, type == GB_T_CSTRING);
					conv->_string.value.start = 0;
					conv->_string.value.len = GB.StringLength(conv->_string.value.addr);
					return FALSE;
					
				default:
					break;
			}
		}
		else
		{
			switch (type)
			{
				case GB_T_FLOAT:
					conv->_float.value = gsl_blas_dznrm2(CVEC(THIS));
					return FALSE;
					
				case GB_T_SINGLE:
					conv->_single.value = gsl_blas_dznrm2(CVEC(THIS));
					return FALSE;
					
				case GB_T_INTEGER:
				case GB_T_SHORT:
				case GB_T_BYTE:
					conv->_integer.value = gsl_blas_dznrm2(CVEC(THIS));
					return FALSE;
					
				case GB_T_LONG:
					conv->_long.value = gsl_blas_dznrm2(CVEC(THIS));
					return FALSE;
					
				case GB_T_STRING:
				case GB_T_CSTRING:
					conv->_string.value.addr = _to_string(THIS, type == GB_T_CSTRING);
					conv->_string.value.start = 0;
					conv->_string.value.len = GB.StringLength(conv->_string.value.addr);
					return FALSE;
					
				default:
					break;
			}
		}
		
		// Vector ---> Float[]
		if ((type == GB.FindClass("Float[]") || type == CLASS_Polynomial) && !COMPLEX(THIS))
		{
			GB_ARRAY a;
			int i;
			double *data;
			
			GB.Array.New(&a, GB_T_FLOAT, SIZE(THIS));
			data = (double *)GB.Array.Get(a, 0);
			for(i = 0; i < SIZE(THIS); i++)
				data[i] = gsl_vector_get(VEC(THIS), i);
			
			conv->_object.value = a;
			if (type != CLASS_Polynomial)
				return FALSE;
		}
		// Vector ---> Complex[]
		else if (type == GB.FindClass("Complex[]") || type == CLASS_Polynomial)
		{
			GB_ARRAY a;
			int i;
			void **data;
			CCOMPLEX *c;
			
			GB.Array.New(&a, CLASS_Complex, SIZE(THIS));
			data = (void **)GB.Array.Get(a, 0);
			for(i = 0; i < SIZE(THIS); i++)
			{
				c = COMPLEX_create(COMPLEX(THIS) ? gsl_vector_complex_get(CVEC(THIS), i) : gsl_complex_rect(gsl_vector_get(VEC(THIS), i), 0));
				data[i] = c;
				GB.Ref(c);
			}
			
			conv->_object.value = a;
			if (type != CLASS_Polynomial)
				return FALSE;
		}
		else
			return TRUE;
		
		// Vector ---> Polynomial
		if (type == CLASS_Polynomial)
		{
			void *unref = conv->_object.value;
			GB.Ref(unref); // Will be unref by the next GB.Conv()
			POLYNOMIAL_convert(FALSE, type, conv);
			GB.Unref(&unref); // Will be unref by the next GB.Conv()
			//GB.Conv(conv, type);
			//GB.UnrefKeep(&conv->_object.value, FALSE); // Will be ref again after the current GB.Conv()
			return FALSE;
		}
		
	}
	else if (type >= GB_T_OBJECT)
	{
		if (GB.Is(conv->_object.value, CLASS_Array))
		{
			GB_ARRAY array = (GB_ARRAY)conv->_object.value;
			int size = GB.Array.Count(array);
			CVECTOR *v;
			int i;
			GB_VALUE temp;
			void *data;
			GB_TYPE atype = GB.Array.Type(array);
			
			// Float[] Integer[] ... ---> Vector
			if (atype > GB_T_BOOLEAN && atype <= GB_T_FLOAT)
			{
				v = VECTOR_create(size, FALSE, FALSE);
				
				for (i = 0; i < size; i++)
				{
					data = GB.Array.Get(array, i);
					GB.ReadValue(&temp, data, atype);
					GB.Conv(&temp, GB_T_FLOAT);
					gsl_vector_set(VEC(v), i, temp._float.value);
				}
				
				conv->_object.value = v;
				return FALSE;
			}
			// Variant[] ---> Vector
			else if (atype == GB_T_VARIANT)
			{
				CCOMPLEX *c;
				v = VECTOR_create(size, TRUE, FALSE);
				
				for (i = 0; i < size; i++)
				{
					GB.ReadValue(&temp, GB.Array.Get(array, i), atype);
					GB.BorrowValue(&temp);
					GB.Conv(&temp, CLASS_Complex);
					c = temp._object.value;
					if (c)
						gsl_vector_complex_set(CVEC(v), i, c->number);
					else
						gsl_vector_complex_set(CVEC(v), i, COMPLEX_zero);
					GB.ReleaseValue(&temp);
				}
				
				conv->_object.value = v;
				return FALSE;
			}
			// Complex[] ---> Vector
			else if (atype == CLASS_Complex)
			{
				CCOMPLEX *c;
				v = VECTOR_create(size, TRUE, FALSE);
				
				for (i = 0; i < size; i++)
				{
					c = *((CCOMPLEX **)GB.Array.Get(array, i));
					if (c)
						gsl_vector_complex_set(CVEC(v), i, c->number);
					else
						gsl_vector_complex_set(CVEC(v), i, COMPLEX_zero);
				}
				
				conv->_object.value = v;
				return FALSE;
			}
		}
		// Float Integer... ---> Vector
		else if (type > GB_T_BOOLEAN && type <= GB_T_FLOAT)
		{
			CVECTOR *v = VECTOR_create(1, FALSE, FALSE);
			if (type == GB_T_FLOAT)
				gsl_vector_set(VEC(v), 0, conv->_float.value);
			else if (type == GB_T_SINGLE)
				gsl_vector_set(VEC(v), 0, conv->_single.value);
			else
				gsl_vector_set(VEC(v), 0, conv->_integer.value);
			conv->_object.value = v;
			return FALSE;
		}
		// Complex ---> Vector
		else if (type == CLASS_Complex)
		{
			CCOMPLEX *c = (CCOMPLEX *)conv->_object.value;
			CVECTOR *v = VECTOR_create(1, TRUE, FALSE);
			gsl_vector_complex_set(CVEC(v), 0, c->number);
			conv->_object.value = v;
			return FALSE;
		}
	}
	
	return TRUE;
}