Module: BOAST::EmlProbe

Extended by:
PrivateStateAccessor
Defined in:
lib/BOAST/Runtime/EnergyProbe.rb

Class Method Summary collapse

Methods included from PrivateStateAccessor

address_size, address_size=, annotate, annotate=, annotate?, annotate_indepth_list, annotate_indepth_list=, annotate_level, annotate_level=, annotate_list, annotate_list=, architecture, architecture=, array_start, array_start=, chain_code, chain_code=, chain_code?, debug, debug=, debug?, debug_kernel_source, debug_kernel_source=, debug_kernel_source?, debug_source, debug_source=, debug_source?, decl_module, decl_module=, decl_module?, default_align, default_align=, default_int_signed, default_int_signed=, default_int_signed?, default_int_size, default_int_size=, default_real_size, default_real_size=, default_type, default_type=, disable_openmp, disable_openmp=, disable_openmp?, executable, executable=, executable?, ffi, ffi=, ffi?, fortran_line_length, fortran_line_length=, get_address_size, get_annotate, get_annotate_indepth_list, get_annotate_level, get_annotate_list, get_architecture, get_array_start, get_chain_code, get_debug, get_debug_kernel_source, get_debug_source, get_decl_module, get_default_align, get_default_int_signed, get_default_int_size, get_default_real_size, get_default_type, get_disable_openmp, get_executable, get_ffi, get_fortran_line_length, get_indent_increment, get_indent_level, get_keep_temp, get_lang, get_model, get_optimizer_log, get_optimizer_log_file, get_output, get_replace_constants, get_synchro, get_use_vla, get_verbose, indent_increment, indent_increment=, indent_level, indent_level=, keep_temp, keep_temp=, keep_temp?, lang, lang=, model, model=, optimizer_log, optimizer_log=, optimizer_log?, optimizer_log_file, optimizer_log_file=, output, output=, replace_constants, replace_constants=, replace_constants?, set_address_size, set_annotate, set_annotate_indepth_list, set_annotate_level, set_annotate_list, set_architecture, set_array_start, set_chain_code, set_debug, set_debug_kernel_source, set_debug_source, set_decl_module, set_default_align, set_default_int_signed, set_default_int_size, set_default_real_size, set_default_type, set_disable_openmp, set_executable, set_ffi, set_fortran_line_length, set_indent_increment, set_indent_level, set_keep_temp, set_lang, set_model, set_optimizer_log, set_optimizer_log_file, set_output, set_replace_constants, set_synchro, set_use_vla, set_verbose, synchro, synchro=, use_vla, use_vla=, use_vla?, verbose, verbose=, verbose?

Class Method Details

.computeObject



235
236
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 235

def compute
end

.configureObject



224
225
226
227
228
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 224

def configure
  get_output.puts "emlInit();"
  get_output.puts "emlDeviceGetCount(&_boast_energy_count);"
  get_output.puts "_boast_energy = malloc(_boast_energy_count*sizeof(*_boast_energy));"
end

.declObject



220
221
222
223
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 220

def decl
  get_output.puts "emlData_t **_boast_energy=0;";
  get_output.puts "size_t _boast_energy_count=0;";
end

.headerObject



215
216
217
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 215

def header
  get_output.puts "#include <eml.h>"
end

.is_available?Boolean

Returns:

  • (Boolean)


249
250
251
252
253
254
255
256
257
258
259
260
261
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 249

def is_available?
  return false if OS.mac?
  path = []
  if ENV['LIBRARY_PATH'] then
    path += ENV['LIBRARY_PATH'].split(':').inject([]){|mem, x| []!=mem ? mem : Dir.glob(x+'/libeml.so')}
  end
  begin
    path += `ldconfig -p`.gsub("\t","").split("\n").find_all { |e| e.match(/libeml\.so/) }.collect { |e| e.split(" => ")[1] } if path == []
  rescue
    path += `/sbin/ldconfig -p`.gsub("\t","").split("\n").find_all { |e| e.match(/libeml\.so/) }.collect { |e| e.split(" => ")[1] } if path == []
  end
  return path != []
end

.preambleObject



218
219
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 218

def preamble
end

.startObject



229
230
231
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 229

def start
  get_output.puts "emlStart();";
end

.stopObject



232
233
234
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 232

def stop
  get_output.puts "emlStop(_boast_energy);";
end

.storeObject



237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/BOAST/Runtime/EnergyProbe.rb', line 237

def store
  get_output.print <<EOF
{
  VALUE results;
  double consumed;
  results = rb_hash_new();
  emlDataGetConsumed(_boast_energy[0], &consumed);
  rb_hash_aset(results, ID2SYM(rb_intern("total" )), rb_float_new(consumed));
  rb_hash_aset(_boast_stats, ID2SYM(rb_intern("energy")), results);
}
EOF
end