class PAPI::EventSet
Public Class Methods
new()
click to toggle source
# File lib/PAPI/EventSet.rb, line 23 def initialize number = FFI::MemoryPointer::new(:int) number.write_int(PAPI_NULL) error = PAPI::PAPI_create_eventset( number ) @number = number.read_int PAPI::error_check(error) @size = 0 end
Public Instance Methods
accum(values)
click to toggle source
# File lib/PAPI/EventSet.rb, line 185 def accum(values) values_p = FFI::MemoryPointer::new(:long_long, @size) values_p.write_array_of_long_long(values) error = PAPI::PAPI_accum(@number, values_p) PAPI::error_check(error) new_values = values_p.read_array_of_long_long(@size) values.replace(new_values) return self end
add( events )
click to toggle source
# File lib/PAPI/EventSet.rb, line 52 def add( events ) evts = [events].flatten evts.each { |ev| error = PAPI::PAPI_add_event(@number, ev.to_i) PAPI::error_check(error) } error = PAPI::PAPI_num_events(@number) PAPI::error_check(error) @size = error return self end
add_named(events)
click to toggle source
# File lib/PAPI/EventSet.rb, line 64 def add_named(events) evts = [events].flatten evts.each { |ev| error = PAPI::PAPI_add_named_event(@number, ev.to_s) PAPI::error_check(error) } error = PAPI::PAPI_num_events(@number) PAPI::error_check(error) @size = error return self end
assign_component(component)
click to toggle source
# File lib/PAPI/EventSet.rb, line 46 def assign_component(component) error = PAPI::PAPI_assign_eventset_component( @number, component.to_i ) PAPI::error_check(error) return self end
cleanup()
click to toggle source
# File lib/PAPI/EventSet.rb, line 32 def cleanup error = PAPI::PAPI_cleanup_eventset( @number ) PAPI::error_check(error) return self end
destroy()
click to toggle source
# File lib/PAPI/EventSet.rb, line 38 def destroy number = FFI::MemoryPointer::new(:int) number.write_int(@number) error = PAPI::PAPI_destroy_eventset( number ) PAPI::error_check(error) return self end
events()
click to toggle source
# File lib/PAPI/EventSet.rb, line 160 def events events_p = FFI::MemoryPointer::new(:int, @size) size_p = FFI::MemoryPointer::new(:int) size_p.write_int(@size) error = PAPI::PAPI_list_events(@number, events_p, size_p) PAPI::error_check(error) evts = events_p.read_array_of_int(size_p.read_int) return evts.collect { |code| PRESET_EVENTS_HASH[code] } end
Also aliased as: list_events
possible(preset = true)
click to toggle source
# File lib/PAPI/EventSet.rb, line 100 def possible(preset = true) cid = nil begin e = PAPI::PAPI_get_eventset_component(@number) PAPI::error_check(e) cid = e rescue cid = 0 end list = [] return nil unless COMPONENTS[cid] if preset and COMPONENTS[cid].preset then events = COMPONENTS[cid].preset else events = COMPONENTS[cid].native end events.each { |event| error = PAPI::PAPI_add_event(@number, event.to_i) if( error >= OK ) then error = PAPI::PAPI_remove_event(@number, event.to_i) PAPI::error_check(error) list.push event elsif event.masks then event.masks.each { |mask| error = PAPI::PAPI_add_named_event(@number, mask.info[:symbol]) if( error >= OK ) then error = PAPI::PAPI_remove_named_event(@number, mask.info[:symbol]) PAPI::error_check(error) list.push event break end } event.masks.each { |mask| error = PAPI::PAPI_add_named_event(@number, mask.info[:symbol].to_ptr.read_string+":cpu=1") if( error >= OK ) then error = PAPI::PAPI_remove_named_event(@number, mask.info[:symbol].to_ptr.read_string+":cpu=1") PAPI::error_check(error) list.push event break end } else error = PAPI::PAPI_add_named_event(@number, (event.info[:symbol].to_ptr.read_string+":cpu=1").gsub(/.*::/,"")) if( error >= OK ) then error = PAPI::PAPI_remove_named_event(@number, (event.info[:symbol].to_ptr.read_string+":cpu=1").gsub(/.*::/,"")) PAPI::error_check(error) list.push event end end } return list end
read()
click to toggle source
# File lib/PAPI/EventSet.rb, line 195 def read values_p = FFI::MemoryPointer::new(:long_long, @size) error = PAPI::PAPI_read(@number, values_p) PAPI::error_check(error) return values_p.read_array_of_long_long(@size) end
read_ts()
click to toggle source
# File lib/PAPI/EventSet.rb, line 202 def read_ts values_p = FFI::MemoryPointer::new(:long_long, @size) ts_p = FFI::MemoryPointer::new(:long_long) error = PAPI::PAPI_read_ts(@number, values_p, ts_p) PAPI::error_check(error) return [values_p.read_array_of_long_long(@size), ts_p.read_long_long] end
remove( events )
click to toggle source
# File lib/PAPI/EventSet.rb, line 76 def remove( events ) evts = [events].flatten evts.each { |ev| error = PAPI::PAPI_remove_event(@number, ev.to_i) PAPI::error_check(error) } error = PAPI::PAPI_num_events(@number) PAPI::error_check(error) @size = error return self end
remove_named( events )
click to toggle source
# File lib/PAPI/EventSet.rb, line 88 def remove_named( events ) evts = [events].flatten evts.each { |ev| error = PAPI::PAPI_remove_named_event(@number, ev.to_s) PAPI::error_check(error) } error = PAPI::PAPI_num_events(@number) PAPI::error_check(error) @size = error return self end
size()
click to toggle source
# File lib/PAPI/EventSet.rb, line 153 def size return @size end
Also aliased as: length, num_events
start()
click to toggle source
# File lib/PAPI/EventSet.rb, line 172 def start error = PAPI::PAPI_start(@number) PAPI::error_check(error) return self end
stop()
click to toggle source
# File lib/PAPI/EventSet.rb, line 178 def stop values_p = FFI::MemoryPointer::new(:long_long, @size) error = PAPI::PAPI_stop(@number, values_p) PAPI::error_check(error) return values_p.read_array_of_long_long(@size) end