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); } }
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)); }
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(); } }
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; }
inline char* zobject::to_string() { char* result = NULL; VIRTUAL_FUNCTION_CALL(result, _to_string()); return result; }
char* zsyntree_to_string() { return _to_string(true, true); }
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; }