Package edu.cmu.graphchi

Source Code of edu.cmu.graphchi.ChiFilenames

package edu.cmu.graphchi;

import edu.cmu.graphchi.datablocks.BytesToValueConverter;
import edu.cmu.graphchi.engine.VertexInterval;
import edu.cmu.graphchi.io.CompressedIO;

import java.io.*;
import java.util.ArrayList;

/**
* Copyright [2012] [Aapo Kyrola, Guy Blelloch, Carlos Guestrin / Carnegie Mellon University]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class ChiFilenames {

    public static String vertexDataSuffix = "";

    public static String getFilenameOfVertexData(String baseFilename, BytesToValueConverter valueConv, boolean sparse) {
        return baseFilename + "." + valueConv.sizeOf() + "Bj.vout" + vertexDataSuffix  + (sparse ? ".sparse" : "");
    }

    public static String getFilenameOfDegreeData(String baseFilename, boolean sparse) {
        return baseFilename + "_degsj.bin" + (sparse ? ".sparse" : "");
    }

    public static String getPartStr(int p, int nShards) {
        return "." + p + "_" + nShards;
    }

    public static String getDirnameShardEdataBlock(String edataShardName, int blocksize) {
        if (CompressedIO.isCompressionEnabled()) {
            edataShardName += ".Z.";
        }
        return edataShardName + "_blockdir_" + blocksize;
    }

    public static String getFilenameShardEdataBlock(String edataShardname, int blockId, int blocksize) {

        return getDirnameShardEdataBlock(edataShardname, blocksize) + "/" + blockId;
    }

    public static int getShardEdataSize(String edataShardname) throws IOException {
        String fname = edataShardname + ".size";
        BufferedReader rd = new BufferedReader(new FileReader(new File(fname)));
        String ln = rd.readLine();
        rd.close();
        return Integer.parseInt(ln);
    }

    public static String getFilenameShardEdata(String baseFilename, BytesToValueConverter valueConv, int p, int nShards) {
        return baseFilename + ".edata_java.e" + valueConv.sizeOf() + "B." + p + "_" + nShards;
    }

    public static String getFilenameShardsAdj(String baseFilename, int p, int nShards) {
        return baseFilename + ".edata_java." + p + "_" + nShards + ".adj";
    }

    public static String getFilenameIntervals(String baseFilename, int nShards) {
        return baseFilename + "." + nShards + ".intervalsjava";
    }

    public static String getVertexTranslateDefFile(String baseFilename, int nshards) {
        return baseFilename + "." + nshards + ".vtranslate";
    }

    public static int getBlocksize(int sizeOf) {
        int blocksize = 4096 * 1024;
        while (blocksize % sizeOf != 0) blocksize++;
        assert(blocksize % sizeOf == 0);
        return blocksize;
    }

    // http://stackoverflow.com/questions/35842/how-can-a-java-program-get-its-own-process-id
    public static int getPid() {
        try {
            java.lang.management.RuntimeMXBean runtime = java.lang.management.ManagementFactory.getRuntimeMXBean();
            java.lang.reflect.Field jvm = runtime.getClass().getDeclaredField("jvm");
            jvm.setAccessible(true);
            sun.management.VMManagement mgmt = (sun.management.VMManagement) jvm.get(runtime);
            java.lang.reflect.Method pid_method = mgmt.getClass().getDeclaredMethod("getProcessId");
            pid_method.setAccessible(true);
            return  (Integer) pid_method.invoke(mgmt);
        } catch (Exception err) {
            throw new RuntimeException(err);
        }
    }

    public static ArrayList<VertexInterval> loadIntervals(String baseFilename, int nShardsthrows FileNotFoundException, IOException {
        String intervalFilename = ChiFilenames.getFilenameIntervals(baseFilename, nShards);

        BufferedReader rd = new BufferedReader(new FileReader(new File(intervalFilename)));
        String line;
        int lastId = 0;
        ArrayList<VertexInterval> intervals = new ArrayList<VertexInterval>(nShards);
        while((line = rd.readLine()) != null) {
            int vid = Integer.parseInt(line);
            intervals.add(new VertexInterval(lastId, vid));
            lastId = vid + 1;
        }
        return intervals;
    }


    public static int numVertices(String baseFilename, int numShards) throws IOException {
        ArrayList<VertexInterval> intervals = loadIntervals(baseFilename, numShards);
        return intervals.get(intervals.size() - 1).getLastVertex() + 1;
    }
}
TOP

Related Classes of edu.cmu.graphchi.ChiFilenames

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.